#!/usr/bin/python
# -*-coding:UTF-8 -*-

# ========================
# @Time  : 2021/2/4
# @Author: Sunny
# ========================

#----------------------------单例模式-------------------------
"""
装饰器模式

单例模式:

作业：装饰器实现单例模式(面试题)


"""

class MyClass:


    __obj = None   #将属性设置为私有属性

    @staticmethod
    def __new__(cls, *args, **kwargs):
        if not cls.obj :
            #如果没有创建过对象，就调用父类的new方法创建对象
            cls.obj = super().__new__(cls)
            return cls.obj
        else:
            #如果创建过对象，则把第一次的对象返回
            return cls.obj


m1 = MyClass()
m2 = MyClass()

print(id(m1))
print(id(m2))


#如果外部更改属性，则还是创建了2个对象，所以要将属性变成私有属性，不许外部更改
# m3 = MyClass()
# MyClass.obj=0
# m4 = MyClass()
#
# print(id(m3))
# print(id(m4))